package cn.iocoder.yudao.module.iot.service.devicerel;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.iot.controller.admin.devicerel.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicerel.DeviceRelDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.iot.dal.dataobject.warnpolicy.WarnPolicyDO;

/**
 * 报警器和气阀绑定 Service 接口
 *
 * @author 芋道源码
 */
public interface DeviceRelService {

    /**
     * 创建报警器和气阀绑定
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createDeviceRel(@Valid DeviceRelSaveReqVO createReqVO);

    /**
     * 更新报警器和气阀绑定
     *
     * @param updateReqVO 更新信息
     */
    void updateDeviceRel(@Valid DeviceRelSaveReqVO updateReqVO);

    /**
     * 删除报警器和气阀绑定
     *
     * @param id 编号
     */
    void deleteDeviceRel(Integer id);


    /**
     * 批量删除报警器和气阀绑定
     *
     * @param ids 编号
     */
    void batchDeleteDeviceRel(List<Integer> ids);


    /**
     * 获得报警器和气阀绑定
     *
     * @param id 编号
     * @return 报警器和气阀绑定
     */
    DeviceRelDO getDeviceRel(Integer id);


    DeviceRelDO getDeviceRelByDeviceName(String deviceName);
    /**
     * 获得报警器和气阀绑定分页
     *
     * @param pageReqVO 分页查询
     * @return 报警器和气阀绑定分页
     */
    PageResult<DeviceRelDO> getDeviceRelPage(DeviceRelPageReqVO pageReqVO);

    DeviceRelDO getDeviceRelByvalveCode(String valveCode);

    Long getDeviceCountByDeviceName(String deviceName);

    Long getDeviceCountByvalveCode(String deviceName);
}